package tmall;

import cn.tmall.commons.service.IBaseService;
import cn.tmall.entity.shop.Order;
import cn.tmall.entity.shop.OrderItem;
import cn.tmall.dao.shop.OrderRepository;

import java.util.List;

public interface IOrderService extends IBaseService<Order, Long, OrderRepository> {
    /**
     * 获取唯一订单号
     * 时间戳+随机数<br>
     * 建议生产环境使用redis获取唯一订单号
     *
     * @return
     */
    String getOrderSn();

    void save(Order order, List<OrderItem> itemList);

    /**
     * 用户取消订单
     * @param orderSn
     */
    void cancel(String orderSn);

    Order getByOrderSn(String orderSn);

    /**
     * 确认收货
     * @param orderSn
     */
    Order confirmReceive(String orderSn);

    void updateOrder(Order order);


    /**
     * 管理员添加备注信息
     * @param order
     * @param message
     */
    void addComment(Order order, String message);
    /**
     * todo 支付订单暂时没有真实实现，仅仅更改订单状态为已支付
     * @param orderSn
     * @param  payType
     */
    void payment(String orderSn,String payType);
}

